iSCSI 效能分析和調整

對於在連接到系統時以及在連接到網路切換時出現的網際網路小型電腦系統介面 (iSCSI) 主機效能問題,此程序提供瞭解決方案。

關於這項作業

一些可能影響 iSCSI 效能的屬性和主機參數:
  • 傳輸控制通訊協定 (TCP) 延遲 ACK
  • 乙太網路巨型訊框
  • 網路瓶頸或超載
  • iSCSI 階段作業登入平衡
  • 網路上 iSCSI 的優先順序流程控制 (PFC) 設定和頻寬配置

程序

  1. 停用 TCP 延遲確認通知特性。
    如果要停用此特性,請參閱 OS/平台說明文件。

    這個問題的主要特徵:讀取效能明顯低於寫入效能。傳輸控制通訊協定 (TCP) 延遲確認通知是某些 TCP 實作為了提高網路效能而採用的一種技術。但在這個範例情節中,由於只有一個未完成的 I/O,這種技術會明顯降低 I/O 效能。

    基本上,多個 ACK 回應可以合併成單一回應,以降低通訊協定通訊協定負荷。如 RFC 1122 所述,主機傳送 ACK 回應時可以延遲最多 500 毫秒。此外,在一連串最大送入的區段中,每隔一個區段就必須傳送 ACK 回應。

    重要: 主機必須重新開機,這些設定才會生效。有些平台(例如,標準 Linux 發行套件)無法停用此特性。但是,7.1 版已解決此問題,不需要變更主機配置來管理 TcpDelayedAck 行為。
  2. 為 iSCSI 啟用巨型訊框。

    巨型訊框是大小超過 1500 位元組的乙太網路訊框。最大傳輸單位 (MTU) 參數用於測量巨型訊框的大小。

    系統支援 9000 位元組的 MTU。請參閱 CLI 指令 cfgportip,以啟用巨型訊框。這個指令會造成干擾,因為鏈結會不平穩,而經由此埠的 I/O 作業會暫停。

    網路必須支援端對端的巨型訊框才有效果。請傳送連線測試封包(遞送時不要片段化),以驗證網路是否支援巨型訊框。例如:
    • Windows:
      ping -t <iscsi target ip> -S <iscsi initiator ip> -f -l <new mtu size - packet overhead (usually 36, might differ)>
      下列指令示範如何檢查 Windows 7 系統上是否正確設定 9000 位元組的 MTU:
      ping -t -S 192.168.1.117 192.168.1.217 -f -l 8964
      以下是成功回覆的輸出範例:
      192.168.1.217: bytes=8964 time=1ms TTL=52
    • Linux:
      ping -l <source iscsi initatior ip> -s <new mtu size> -M do <iscsi target ip> 
    • ESXi:
      ping <iscsi target ip> -I <source iscsi initiator ip> -s <new mtu size - 28> -d
  3. 驗證起始器/目標埠所連接之交換器的埠統計資料,確定封包丟棄不嚴重。

    檢閱網路架構,避免任何瓶頸和超載的情形。網路必須維持平衡,以避免任何封包丟棄情況;封包丟棄會明顯降低儲存體效能。請求網路支援來修正任何這種問題。

  4. 最佳化和利用所有 iSCSI 埠。
    要最佳化系統資源利用率,必須使用所有 iSCSI 埠。
    • 將每個埠指派給一個 CPU,並維持登入平衡,就可以將 CPU 使用率最大化,達到更好的效能。理想情況下,配置與系統節點上 iSCSI 埠數量相等的子網路。使用不同子網路上的 IP 來配置節點的每一個埠,並且對其他節點保持相同。下列範例顯示理想的配置:

      節點 1
      Port 1: 192.168.1.11
      Port 2: 192.168.2.21
      Port 3: 192.168.3.31

      Node 2:
      Port 1: 192.168.1.12
      Port 2: 192.168.2.22
      Port 3: 192.168.3.33
    • 避免有 50 台主機登入埠 1 但只有五台主機登入埠 2 的情況。
    • 妥善劃分子網路,以維持階段作業數目和備援性之間的平衡。
  5. 對 PFC 設定的問題進行疑難排解。

    無需在系統上啟用 PFC。系統會讀取資料中心橋接交換 (DCBx) 封包,並自動為 iSCSI 啟用 PFC(如果已在交換器上啟用)。在 lsportip 指令的輸出中,lossless_iscsilossless_iscsi6 欄位會顯示 [on/off],視系統上是否為 iSCSI 啟用 PFC 而定。

    如果 lossless_iscsilossless_iscsi6 欄位顯示 off,可能是由於下列其中一個原因:
    1. 沒有為該 IP 設定 VLAN。驗證下列檢查:
      • 對於 IP 位址類型 IPv4,請檢查 lsportip 輸出中的 vlan 欄位。不得為空白。
      • 對於 IP 位址類型 IPv6,請檢查 lsportip 輸出中的 vlan_6 欄位。不得為空白。
      • 如果 vlanvlan_6 欄位為空白,請使用為 iSCSI 配置 VLAN 來為 IP 類型設定 VLAN。
    2. 沒有為該 IP 設定主機旗標。驗證下列檢查:
      • 對於 IP 位址類型 IPv4,請檢查 lsportip 輸出中的 host 欄位。必須是 yes
      • 對於 IP 位址類型 IPv6,請檢查 lsportip 輸出中的 host_6 欄位。必須是 yes
      • 如果 hosthost_6 欄位不是 yes,請使用 cfgportip CLI 指令為 IP 類型設定主機旗標。
    3. 交換器上未正確設定 PFC。

      如果已正確設定 VLAN,也設定主機旗標,但 lossless_iscsilossless_iscsi6 欄位仍顯示 off,表示某些交換器設定可能遺漏或不正確。

      在交換器中驗證下列設定:

      • 為 iSCSI 資料流量設定優先順序標籤。
      • 為指派給 iSCSI CoS 的優先順序標籤啟用 PFC。
      • 在交換器上啟用 DCBx。
      查看適當的說明文件:
      • 查閱有關在特定交換器上啟用 PFC 的說明文件。
      • 查閱有關在 Red Hat Enterprise Linux (RHEL) 和 Windows 主機上根據您的配置來啟用 PFC 的說明文件。
  6. 確保在網路上分配適當的頻寬給 iSCSI。

    您可以將頻寬劃分給各種不同的資料流量。為了維持良好效能,必須指派適當的頻寬。如果要指派頻寬給 iSCSI 資料流量,您必須先為 iSCSI 啟用優先順序流程控制。